﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BBMS.DLL.Base;
using BBMS.DLL.DataContract;
using System.Collections;

namespace BBMS.DLL.Forms
{
    public partial class frmUserAuthentication : Form
    {
        public frmUserAuthentication()
        {
            InitializeComponent();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            NhanVien nv = new NhanVien();
            FilterParams fp = new FilterParams();
            FilterCondition fcUserName = new FilterCondition("UserName","UserName",txtUserName.Text.Trim(),SQLOperator.EQUAL);
            FilterCondition fcPassword = new FilterCondition("Password","Password", MD5Crypt.crypt(txtPassword.Text.Trim(), txtPassword.Text.Trim().Substring(0, 1) + txtPassword.Text.Trim().Substring(txtPassword.Text.Trim().Length-1, 1)), SQLOperator.EQUAL);
            fp.ArParams = new System.Collections.ArrayList { fcUserName, fcPassword };
            ArrayList ar =  nv.GetAllObject(fp);
            if (ar!=null)
            {
                if (ar.Count > 0)
                {
                    nv = (NhanVien)ar[0];
                    if (nv != null && nv.ID != 0)
                    {
                        // login ok
                        Config.curUser = new User();
                        Config.curUser.UserID = nv.ID;
                        Config.curUser.UserName = nv.UserName;
                        Config.curUser.FullName = nv.FullName;
                        Config.curUser.Position = nv.Position;
                        Config.curUser.Department = nv.Department;
                        Config.curUser.TimeLogin = DateTime.Now;
                        NhanVienQuyen nvq = new NhanVienQuyen();
                        FilterParams fpr = new FilterParams();
                        FilterCondition fcIDNhanVien = new FilterCondition("IDNhanVien", "IDNhanVien", Config.curUser.UserID, SQLOperator.EQUAL);
                        fp.ArParams = new System.Collections.ArrayList { fcIDNhanVien };
                        Config.curUser.UserRoles = new Hashtable();
                        ArrayList arr = nvq.GetAllObject(fp);
                        for (int i = 0; i < arr.Count; i++)
                        {
                            NhanVienQuyen item = (NhanVienQuyen)arr[i];
                            Config.curUser.UserRoles.Add(item, new FunctionRole(item.Ma, item.Quyen));
                        }
                        this.DialogResult = DialogResult.OK;

                    }
                    else MessageBox.Show(null, "Tên người dùng hoặc mật khẩu không đúng", "Đăng nhập thất bại");

                }
                else MessageBox.Show(null, "Tên người dùng hoặc mật khẩu không đúng", "Đăng nhập thất bại");
            }
            else MessageBox.Show(null, "Tên người dùng hoặc mật khẩu không đúng", "Đăng nhập thất bại");

        }
    }
}
